/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

/**
 *
 * @author root
 */
import beans.*;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

public class DaoFactory {

    private final Session session;
    private Transaction transaction;

    public DaoFactory() {
        session = HibernateUtil.getSession();
    }
     public DaoFactory(Session session){
       this.session=session;
    }

    public void beginTransaction() {
        this.transaction = this.session.beginTransaction();
    }

    public void commit() {
        this.transaction.commit();
        this.transaction = null;
    }

    public boolean hasTransaction() {
        return this.transaction != null;
    }

    public void rollback() {
        this.transaction.rollback();
        this.transaction = null;
    }

    
    public void close() {
        this.session.close();
    }

    public DaoGenerico<Area> getAreaDao(){
	return new DaoGenerico<Area>(this.session,Area.class);
    }
    
    public DaoGenerico<Curso> getCursoDao(){
	return new DaoGenerico<Curso>(this.session,Curso.class);
    }

    public DaoGenerico<Periodo> getPeriodoDao(){
	return new DaoGenerico<Periodo>(this.session,Periodo.class);
    }

    public DaoGenerico<Pessoa> getPessoaDao(){
	return new DaoGenerico<Pessoa>(this.session,Pessoa.class);
    }

    public DaoGenerico<PessoaFisica> getPessoaFisicaDao(){
	return new DaoGenerico<PessoaFisica>(this.session,PessoaFisica.class);
    }

    public DaoGenerico<PessoaJuridica> getPessoaJuridicaDao(){
	return new DaoGenerico<PessoaJuridica>(this.session,PessoaJuridica.class);
    }

    public DaoGenerico<PerfilCandidato> getPerfilDao(){
	return new DaoGenerico<PerfilCandidato>(this.session,PerfilCandidato.class);
    }

     public DaoGenerico<Oportunidade> getOportunidadeDao(){
	return new DaoGenerico<Oportunidade>(this.session,Oportunidade.class);
    }

     
}
